package br.com.sistema.models;

import java.util.Calendar;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Version;

@Entity
//@Table(name="entidade", uniqueConstraints={@UniqueConstraint(columnNames={"enticpf","entitipoid","entitipo"})})
@Table(name="entidade")
public class Entidade {

	@ManyToOne
	@JoinColumn(name="entitipoid", nullable=false)
	private EntidadeTipo entidadeTipo;
	
	@Id
	@Column(name="entiid")
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer entiid;
	
	@Column(name="entinome", length=150)
	private String entinome;
	
	@Column(name="entinomecurto")
	private String entinomecurto;
	
	@Column(name="enticpfcnpj")
	private String enticpfcnpj;
	
	@Column(name="entitipo", length=1, nullable=false)
	private String entitipo;
	
	@Column(name="entisexo")
	private String entisexo;
	
	@Column(name="entidatanascimento")
	@Temporal(TemporalType.DATE)  
	private Date entidatanascimento;
	
	@Column(name="entiidentidade")
	private String entiidentidade;

	@Column(name="entiorgaoemissor")
	private String entiorgaoemissor;
	
	@Column(name="entidataemissao")
	@Temporal(TemporalType.DATE)  
	private Date entidataemissao;
	
	@Column(name="entinacionalidade", length=50)
	private String entinacionalidade;
	
	@Column(name="entinaturalidade", length=50)
	private String entinaturalidade;
	
	@Column(name="entiuf")
	private String entiuf;
	
	@Column(name="entinomepai")
	private String entinomepai;
	
	@Column(name="entinomemae")
	private String entinomemae;
	
	@Column(name="entiddd1", length=3)
	private String entiddd1;
	
	@Column(name="entiddd2", length=3)
	private String entiddd2;
	
	@Column(name="enticel1", length=12)
	private String enticel1;
	
	@Column(name="enticel2", length=12)
	private String enticel2;
	
	@Column(name="entiemail1", length=150)
	private String entiemail1;
	
	@Column(name="entiemail2", length=150)
	private String entiemail2;

	@Column(name="entiestadocivil", length=50)
	private String entiestadocivil;
	
	@Column(name="xdatai", nullable=false)
	@Temporal(TemporalType.TIMESTAMP)  
	private Calendar xdatai;
	
	@Column(name="xdatau", nullable=false)
	@Temporal(TemporalType.TIMESTAMP)  
	private Calendar xdatau;
	
	@Column(name="xusuario", nullable=false)
	private String xusuario;
	
	@Version
	@Column(name="xversao")
	private Integer xversao;
	
	public EntidadeTipo getEntidadeTipo() {
		return entidadeTipo;
	}

	public void setEntidadeTipo(EntidadeTipo entidadeTipo) {
		this.entidadeTipo = entidadeTipo;
	}

	public Integer getEntiid() {
		return entiid;
	}

	public void setEntiid(Integer entiid) {
		this.entiid = entiid;
	}

	public String getEntinome() {
		return entinome;
	}

	public void setEntinome(String entinome) {
		this.entinome = entinome;
	}

	public String getEntinomecurto() {
		return entinomecurto;
	}

	public void setEntinomecurto(String entinomecurto) {
		this.entinomecurto = entinomecurto;
	}

	public String getEnticpfcnpj() {
		return enticpfcnpj;
	}

	public void setEnticpfcnpj(String enticpf) {
		this.enticpfcnpj = enticpf;
	}

	public String getEntitipo() {
		return entitipo;
	}

	public void setEntitipo(String entitipo) {
		this.entitipo = entitipo;
	}

	public String getEntisexo() {
		return entisexo;
	}

	public void setEntisexo(String entisexo) {
		this.entisexo = entisexo;
	}

	public Calendar getXdatai() {
		return xdatai;
	}

	public void setXdatai(Calendar xdatai) {
		this.xdatai = xdatai;
	}

	public Calendar getXdatau() {
		return xdatau;
	}

	public void setXdatau(Calendar xdatau) {
		this.xdatau = xdatau;
	}

	public String getXusuario() {
		return xusuario;
	}

	public void setXusuario(String xusuario) {
		this.xusuario = xusuario;
	}

	public Date getEntidatanascimento() {
		return entidatanascimento;
	}

	public void setEntidatanascimento(Date entidatanascimento) {
		this.entidatanascimento = entidatanascimento;
	}

	public String getEntiidentidade() {
		return entiidentidade;
	}

	public void setEntiidentidade(String entiidentidade) {
		this.entiidentidade = entiidentidade;
	}

	public String getEntiorgaoemissor() {
		return entiorgaoemissor;
	}

	public void setEntiorgaoemissor(String entiorgaoemissor) {
		this.entiorgaoemissor = entiorgaoemissor;
	}

	public Date getEntidataemissao() {
		return entidataemissao;
	}

	public void setEntidataemissao(Date entidataemissao) {
		this.entidataemissao = entidataemissao;
	}

	public String getEntinacionalidade() {
		return entinacionalidade;
	}

	public void setEntinacionalidade(String entinacionalidade) {
		this.entinacionalidade = entinacionalidade;
	}

	public String getEntinaturalidade() {
		return entinaturalidade;
	}

	public void setEntinaturalidade(String entinaturalidade) {
		this.entinaturalidade = entinaturalidade;
	}

	public String getEntiuf() {
		return entiuf;
	}

	public void setEntiuf(String entiuf) {
		this.entiuf = entiuf;
	}

	public String getEntinomepai() {
		return entinomepai;
	}

	public void setEntinomepai(String entinomepai) {
		this.entinomepai = entinomepai;
	}

	public String getEntinomemae() {
		return entinomemae;
	}

	public void setEntinomemae(String entinomemae) {
		this.entinomemae = entinomemae;
	}

	public String getEnticel1() {
		return enticel1;
	}

	public void setEnticel1(String enticel1) {
		this.enticel1 = enticel1;
	}

	public String getEnticel2() {
		return enticel2;
	}

	public String getEntiddd1() {
		return entiddd1;
	}

	public void setEntiddd1(String entiddd1) {
		this.entiddd1 = entiddd1;
	}

	public String getEntiddd2() {
		return entiddd2;
	}

	public void setEntiddd2(String entiddd2) {
		this.entiddd2 = entiddd2;
	}

	public void setEnticel2(String enticel2) {
		this.enticel2 = enticel2;
	}

	public String getEntiemail1() {
		return entiemail1;
	}

	public void setEntiemail1(String entiemail1) {
		this.entiemail1 = entiemail1;
	}

	public String getEntiemail2() {
		return entiemail2;
	}

	public void setEntiemail2(String entiemail2) {
		this.entiemail2 = entiemail2;
	}

	public String getEntiestadocivil() {
		return entiestadocivil;
	}

	public void setEntiestadocivil(String entiestadocivil) {
		this.entiestadocivil = entiestadocivil;
	}

	@PrePersist
	public void preInsert(){
		this.xdatai = Calendar.getInstance();
		this.xdatau = Calendar.getInstance();
	}
	
	@PreUpdate
	public void preUpdate(){
		this.xdatau = Calendar.getInstance();
	}

}
